package com.hyt.it.ogt.ykcj.service.grade;

import java.util.List;

import com.hyt.it.ogt.ykcj.common.core.domain.AjaxResult;
import com.hyt.it.ogt.ykcj.domain.grade.GradeAnalysisData;
import com.hyt.it.ogt.ykcj.domain.vo.ExportParamVo;
import com.hyt.it.ogt.ykcj.domain.vo.GradeAnalysisDataVo;
import com.hyt.it.ogt.ykcj.domain.vo.GradeAnalysisRsp;
import com.hyt.it.ogt.ykcj.domain.vo.QueryExamineeGradeVo;
import com.hyt.it.ogt.ykcj.domain.vo.export.ExportAreaAnalysisDataVo;

/**
 * 考试成绩数据分析Service接口
 * 
 * @author admin
 * @date 2021-06-24
 */
public interface IGradeAnalysisDataService 
{
    /**
     * 查询考试成绩数据分析
     * 
     * @param analysisId 考试成绩数据分析ID
     * @return 考试成绩数据分析
     */
    public GradeAnalysisData selectGradeAnalysisDataById(String analysisId);

    /**
     * 查询考试成绩数据分析列表
     * 
     * @param gradeAnalysisData 考试成绩数据分析
     * @return 考试成绩数据分析集合
     */
    public List<GradeAnalysisData> selectGradeAnalysisDataList(GradeAnalysisData gradeAnalysisData);

    /**
     * 新增考试成绩数据分析
     * 
     * @param gradeAnalysisData 考试成绩数据分析
     * @return 结果
     */
    public int insertGradeAnalysisData(GradeAnalysisData gradeAnalysisData);

    /**
     * 修改考试成绩数据分析
     * 
     * @param gradeAnalysisData 考试成绩数据分析
     * @return 结果
     */
    public int updateGradeAnalysisData(GradeAnalysisData gradeAnalysisData);

    /**
     * 批量删除考试成绩数据分析
     * 
     * @param analysisIds 需要删除的考试成绩数据分析ID
     * @return 结果
     */
    public int deleteGradeAnalysisDataByIds(String[] analysisIds);

    /**
     * 删除考试成绩数据分析信息
     * 
     * @param analysisId 考试成绩数据分析ID
     * @return 结果
     */
    public int deleteGradeAnalysisDataById(String analysisId);

    public void gradeDataStatistics();

    List<GradeAnalysisDataVo> selectGradeAnalysisDataTotalListByIdAndYearList(
            String examYear, String examNameConfigId,String examId);

  List<GradeAnalysisDataVo> getGradeAnalysisDataBySex(String examNameConfigId, String examYear,
      String examId);

  List<GradeAnalysisDataVo> getGradeAnalysisDataBySexYearList(String examNameConfigId,
      String examYear, String examId);

  /**
     * 查询考试数据分析
     * @param queryExamineeGradeVo
     * @return
     */
    public GradeAnalysisRsp selectGradeAnalysisData(QueryExamineeGradeVo queryExamineeGradeVo);

    void convertCurYearData(GradeAnalysisDataVo gradeAnalysisDataVo, String examNameConfigId,
      String examYear, String examId);

  GradeAnalysisDataVo getYearDataVo(String examNameConfigId, String examYear, String examId);

  /**
     * 查询导出数据列表
     * @param exportParamVo
     * @return
     */
    public List<ExportAreaAnalysisDataVo> selectExportAreaDataList(ExportParamVo exportParamVo);

    public AjaxResult exportAnalysisData(ExportParamVo exportParamVo);
}
